package com.xywy.common.net;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author Joker
 */
public class ParserManager {

	private Set<Parser> network;

	private ParserManager() {
		network = new HashSet<Parser>();
	}

	/**
	 * 静态单例
	 */
	public static ParserManager getInstance() {
		return singletonHolder.instance;
	}

	private static class singletonHolder {
		private static ParserManager instance = new ParserManager();
	}

	/**
	 * 当前activity的网络请求队列，插入任务
	 * 
	 * @param t
	 * @param <T>
	 */
	public <T extends Parser> void add(T t) {
		network.add(t);
	}

	/**
	 * 从队列中移除任务
	 * 
	 * @param t
	 * @param <T>
	 */
	public <T extends Parser> void remove(T t) {
		network.remove(t);
	}

	public boolean contain(Parser parser) {
		Iterator<Parser> i = network.iterator();
		while (i.hasNext()) {
			Parser tmp = i.next();
			if (tmp.compareTo(parser)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 中断当前页，未完成的所有网络任务
	 */
	protected void removeAlremoveAllNetWorklNetWork() {
		for (Parser parser : network) {
			// 中断网络请求
			NetUtil.getInstance().shutdown(parser);
			// 从本类移除网络任务
			remove(parser);
		}
	}

}
